(function() {
    var l = this,
    m = function(a) {
        return undefined !== a;
    },
    n = function() {
        throw Error("a");
    },
    aa = function(a) {
        a.ra = function() {
            return a.mb ? a.mb : (a.mb = new a);
        };
    },
    ba = function(a) {
        var b = typeof(a);
        if ("object" == b) {
			if (a) {
				if (a instanceof Array) {
					return "array";
				}

				if (a instanceof Object) {
					return b;
				}

				var c = Object.prototype.toString.call(a);
				if ("[object Window]" == c) {
					return "object";
				}

				if ("[object Array]" == c || "number" == typeof(a.length) && "undefined" != typeof(a.splice) && "undefined" != typeof(a.propertyIsEnumerable) && !a.propertyIsEnumerable("splice")) {
					return "array";
				}
				if ("[object Function]" == c || "undefined" != typeof(a.call) && "undefined" != typeof(a.propertyIsEnumerable) && !a.propertyIsEnumerable("call")) {	
					return "function";
				}
			} else {
				return "null";
			}
		} else if ("function" == b && "undefined" == typeof(a.call)) {
			return "object";
		}

        return b;
    },
    p = function(a) {
        return "string" == typeof(a);
    },
    ca = function(a) {
        return "number" == typeof(a);
    },
    da = function(a, b, c) {
        return a.call.apply(a.bind, arguments);
    },
    ea = function(a, b, c) {
        if (!a) {
			throw Error();
        }
		if (arguments.length > 2) {
            var d = Array.prototype.slice.call(arguments, 2);
            return function() {
                var c = Array.prototype.slice.call(arguments);
                Array.prototype.unshift.apply(c, d);
                return a.apply(b, c);
            };
        }
        return function() {
            return a.apply(b, arguments);
        };
    },
    q = function(a, b, c) {
        q = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? da : ea;
        return q.apply(null, arguments);
    },
    fa = function(a, b) {
        var c = Array.prototype.slice.call(arguments, 1);
        return function() {
            var b = c.slice();
            b.push.apply(b, arguments);
            return a.apply(this, b);
        };
    },
    r = Date.now || function() {
        return +new Date;
    },
    ga = function(a) {
        a = a.split(".");
        var b = l;
        a[0] in b || !b.execScript || b.execScript("var " + a[0]);
        for (var c; a.length && (c = a.shift()); ) {
			if (!a.length && m(true)) {
				b[c] = true;
			} else {
				if (b[c]) {
					b = b[c];
				} else {
					b = b[c] = {};
				}
			}
		}
    },
    t = function(a, b) {
        function c() {}
        c.prototype = b.prototype;
        a.Da = b.prototype;
        a.prototype = new c;
        a.tb = function(a, c, f) {
            for (var g = Array(arguments.length - 2), h = 2; h < arguments.length; h++) {
				g[h - 2] = arguments[h];
            }
			return b.prototype[c].apply(a, g);
        }
    };
    var ha = function() {};
    ha.prototype.contains = n;
    ha.prototype.s = n;
    var ka = function(a) {
        var b = new Image,
			c = ia,
			d = "";

        b.onerror = b.onload = b.onabort = function() {
            delete ja[c];
        };
        ja[c] = b;
		-1 != a.search("&ei=") || (d = "&ei=");
        a = "/gen_204?atyp=i&ct=doodle&cad=" + a + d + "&zx=" + r();
        /^http:/i.test(a) && "https:" == window.location.protocol ? delete ja[c] : (b.src = a, ia = c + 1);
    },
    ja = [],
    ia = 0;

    var la = function(a) {
        this.H = a;
        this.s = false;
        this.v = [];
    },
    ma = function(a) {
        if (!a.s) {
            a.s = true;
            for (var b = 0, c; c = a.v[b]; b++) {
				c();
			}
        }
    };
    la.prototype.w = n;
    var na = function(a, b) {
        a.s ? b() : a.v.push(b);
    },
    oa = function(a) {
        la.call(this, a);
        this.o = new Image;
    };
    t(oa, la);
    oa.prototype.w = function() {
        if (!this.o.src) {
            var a = this;
            this.o.onload = function() {
                ma(a);
            };
            this.o.src = this.H;
			(this.o.complete || "complete" == this.o.readyState) && ma(this);
        }
    };
    var pa = function() {
        return window.performance ? window.performance.now() : Date.now();
    },
    qa = function(a, b) {
        var c = Math.floor(Math.random() * (b - 1));
        return c + (c >= a ? 1 : 0);
    };
    var ra = function(a, b, c) {
        for (var d in a) {
			b.call(c, a[d], d, a);
		}
    },
    sa = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),
    ta = function(a, b) {
        for (var c, d, e = 1; e < arguments.length; e++) {
            d = arguments[e];
            for (c in d) {
				a[c] = d[c];
            }
			for (var f = 0; f < sa.length; f++) {
				c = sa[f];
				Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c]);
			}
        }
    };
    var ua = function(a) {
        ua[" "](a);
        return a;
    };
    ua[" "] = function() {};
    var wa = function(a, b) {
        var c = va;
        return Object.prototype.hasOwnProperty.call(c, a) ? c[a] : c[a] = b(a);
    };
    var xa = String.prototype.trim ? function(a) {
        return a.trim();
    } : function(a) {
        return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "");
    },
    ya = function(a, b) {
        return a < b ? -1 : a > b ? 1 : 0;
    };
    var Aa = function(a, b) {
        google && google.doodle && (b && (google.doodle.cpDestroy = b), google.doodle.cpInit = function() {
            b && b();
            a();
        });
    },
    Ba = function(a, b, c) {
        if (google) {
            var d = function() {
                var a = google.msg && google.msg.unlisten;
                a && (a(106, d), c && a(94, c));
                b();
                return true;
            },
            e = function() {
                var a = document.getElementById("hplogo");
                if (a && "hidden" != a.style.visibility) {
					a = google.msg && google.msg.listen;
					if (google.psy && google.psy.q && a) {
						a(106, d);
						if (c) {
							a(94, c);
						}
					}
				}
            };
            e();
            google.doodle && google.doodle.jesr || (ga("google.doodle.jesr"), google.raas && google.raas("doodle", {
                init: function() {
                    e();
                    google.doodle.jesrd && (a(), google.doodle.jesrd = false);
                },
                dispose: function() {
                    d();
                    google.doodle.jesrd = true;
                }
            }));
        }
    };
    var u = function() {
        this.T = this.T;
        this.w = this.w;
    };
    u.prototype.T = false;
    u.prototype.kb = function() {
        if (!this.T){
			this.T = true;
			this.o();
		}
    };
    var Ca = function(a, b) {
		var udf = undefined;
        a.T ? m(udf) ? b.call(udf) : b() : (a.w || (a.w = []), a.w.push(m(udf) ? q(b, udf) : b));
    };
    u.prototype.o = function() {
        if (this.w) {
			for (; this.w.length; ) {
				this.w.shift()();
			}
		}
    };
    var Da = function(a) {
        if (a && "function" == typeof(a.kb)) {
			a.kb();
		}
    };
    var Ea = "closure_listenable_" + (1000000 * Math.random() | 0),
		Fa = 0;
    var Ga;
    a: {
        var Ha = l.navigator;
        if (Ha) {
            var Ia = Ha.userAgent;
            if (Ia) {
                Ga = Ia;
                break a;
            }
        }
        Ga = "";
    }
    var v = function(a) {
        return - 1 != Ga.indexOf(a);
    };
    var Ja = Array.prototype.indexOf ? function(a, b, c) {
        return Array.prototype.indexOf.call(a, b, c);
    } : function(a, b, c) {
        c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c;

        if (p(a)) {
			return p(b) && 1 == b.length ? a.indexOf(b, c) : -1;
        }

		for (; c < a.length; c++) {
			if (c in a && a[c] === b) {
				return c;
			}
		}

        return - 1;
    },
    Ka = Array.prototype.map ? function(a, b, c) {
        return Array.prototype.map.call(a, b, c);
    } : function(a, b, c) {
        for (var d = a.length, e = Array(d), f = p(a) ? a.split("") : a, g = 0; g < d; g++) {
			if (g in f) {
				e[g] = b.call(c, f[g], g, a);
			}
		}
        return e;
    },
    La = function(a, b) {
        var c = Ja(a, b), d;
		(d = 0 <= c) && Array.prototype.splice.call(a, c, 1);
        return d;
    },
    Ma = function(a) {
        return Array.prototype.concat.apply(Array.prototype, arguments);
    },
    Na = function(a) {
        var b = a.length;
        if (0 < b) {
            for (var c = Array(b), d = 0; d < b; d++) {
				c[d] = a[d];
            }
			return c;
        }
        return [];
    };
    var w = function(a, b) {
        this.type = a;
        this.s = this.H = b;
        this.v = false;
        this.nb = true;
    };
    w.prototype.stopPropagation = function() {
        this.v = true;
    };
    w.prototype.preventDefault = function() {
        this.nb = false;
    };
    var Oa = function(a, b, c, d, e) {
        this.listener = a;
        this.o = null;
        this.src = b;
        this.type = c;
        this.Va = !!d;
        this.Wa = e;
        this.lb = ++Fa;
        this.Pa = this.Ua = false;
    },
    Pa = function(a) {
        a.Pa = true;
        a.listener = null;
        a.o = null;
        a.src = null;
        a.Wa = null
    };
    var Qa = /^(?:([^:/ ? #.] + ) : ) ? ( ? :\ / \ / ( ? :([ ^ /?#]*)@)?([^/# ? ] * ?)( ? ::([0 - 9] + )) ? ( ? =[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/,
	Ra = function(a, b) {
		if (a) {
			for (var c = a.split("&"), d = 0; d < c.length; d++) {
				var e = c[d].indexOf("="),
					f,
					g = null;

				if (e >= 0) {
					f = c[d].substring(0, e);
					g = c[d].substring(e + 1);
				} else {
					f = c[d];
				}

				b(f, g ? decodeURIComponent(g.replace(/\+/g, " ")) : "");
			}
		}
	};
    var Sa = function(a) {
        this.src = a;
        this.o = {};
        this.s = 0;
    },
    Ua = function(a, b, c, d, e) {
        var f = b.toString();
        b = a.o[f];

        if (!b) {
			b = a.o[f] = [];
			a.s++;
		}

        var g = Ta(b, c, d, e);
		if (g > -1) {
			a = b[g];
			a.Ua = false;
		} else {
			a = new Oa(c, a.src, f, !!d, e);
			a.Ua = false;
			b.push(a);
		}

        return a;
    },
    Va = function(a, b) {
        var c = b.type;
        c in a.o && La(a.o[c], b) && (Pa(b), 0 == a.o[c].length && (delete a.o[c], a.s--));
    },
    Wa = function(a, b, c, d, e) {
        a = a.o[b.toString()];
        b = -1;
        a && (b = Ta(a, c, d, e));
        return b > -1 ? a[b] : null;
    },
    Ta = function(a, b, c, d) {
        for (var e = 0; e < a.length; ++e) {
            var f = a[e];
            if (!f.Pa && f.listener == b && f.Va == !!c && f.Wa == d) {
				return e;
			}
        }
        return -1;
    };
    var y = function(a, b, c) {
        return a + c * (b - a);
    };
    var Xa = "StopIteration" in l ? l.StopIteration : {
        message: "StopIteration",
        stack: ""
    },
    Ya = function() {};
	Ya.prototype.o = function() {
        throw Xa;
    };
	Ya.prototype.H = function() {
        return this;
    };
    var Za = v("Opera"),
	z = v("Trident") || v("MSIE"),
	$a = v("Edge"),
	A = v("Gecko") && !(-1 != Ga.toLowerCase().indexOf("webkit") && !v("Edge")) && !(v("Trident") || v("MSIE")) && !v("Edge"),
	ab = -1 != Ga.toLowerCase().indexOf("webkit") && !v("Edge"),
	bb = v("Macintosh"),
	cb = v("Linux") || v("CrOS"),
	db = function() {
        var a = l.document;
        return a ? a.documentMode : undefined;
    },
    eb;
	a: {
        var fb = "",
        gb = (function() {
            var a = Ga;
            if (A) return /rv\:([^\);]+)(\)|;)/.exec(a);
            if ($a) return /Edge\/([\d\.]+)/.exec(a);
            if (z) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);
            if (ab) return /WebKit\/(\S+)/.exec(a);
            if (Za) return /(?:Version)[ \/]?(\S+)/.exec(a);
        })();
        gb && (fb = gb ? gb[1] : "");
        if (z) {
            var hb = db();
            if (null != hb && hb > parseFloat(fb)) {
                eb = String(hb);
                break a;
            }
        }
        eb = fb;
    }
    var ib = eb,
    va = {},
    B = function(a) {
        return wa(a, function() {
            for (var b = 0, c = xa(String(ib)).split("."), d = xa(String(a)).split("."), e = Math.max(c.length, d.length), f = 0; 0 == b && f < e; f++) {
                var g = c[f] || "",
                h = d[f] || "";
                do {
                    g = /(\d*)(\D*)(.*)/.exec(g) || ["", "", "", ""];
                    h = /(\d*)(\D*)(.*)/.exec(h) || ["", "", "", ""];
                    if (0 == g[0].length && 0 == h[0].length) break;
                    b = ya(0 == g[1].length ? 0 : parseInt(g[1], 10), 0 == h[1].length ? 0 : parseInt(h[1], 10)) || ya(0 == g[2].length, 0 == h[2].length) || ya(g[2], h[2]);
                    g = g[3];
                    h = h[3];
                } while ( 0 == b );
            }
            return 0 <= b;
        });
    },
    jb = l.document,
	kb = jb && z ? db() || ("CSS1Compat" == jb.compatMode ? parseInt(ib, 10) : 5) : undefined;
    var lb = function(a) {
        this.o = a;
    };
	t(lb, ha);

    var C = function(a, b, c, d) {
        return new lb([a, b, a + c, b, a + c, b + d, a, b + d]);
    };
	lb.prototype.contains = function(a, b) {
        var c = this.o;
        if (c.length < 6) {
			return false;
        }
		for (var d = !1, e = 0, f = c.length - 2; e < c.length; f = e, e += 2) {
            var g = c[e],
				h = c[e + 1],
				k = c[f],
				f = c[f + 1];

            a < g != a < k && b > h + (a - g) * (f - h) / (k - g) && (d = !d);
        }
        return d;
    };
	lb.prototype.s = function(a) {
        a.beginPath();
        for (var b = 0; b < this.o.length; b += 2) {
			a.lineTo(this.o[b], this.o[b + 1]);
		}
        a.lineTo(this.o[0], this.o[1]);
        a.fill();
        a.stroke();
    };

	!A && !z || z && 9 <= Number(kb) || A && B("1.9.1");
	z && B("9");

    var mb = !z || 9 <= Number(kb),
	nb = z && !B("9");
	
	!ab || B("528");
	A && B("1.9b") || z && B("8") || Za && B("9.5") || ab && B("528");
	A && !B("8") || z && B("9");

    var ob = function(a, b, c, d) {
        this.o = a;
        this.w = b;
        this.s = c;
        this.v = d;
    },
    pb = function(a, b) {
        if (0 == b) return 0;
        if (1 == b) return 1;

        var c = y(0, a.o, b),
        d = y(a.o, a.s, b),
        e = y(a.s, 1, b),
        c = y(c, d, b),
        d = y(d, e, b);

        return y(c, d, b);
    },
    qb = function(a, b) {
        var c = (b - 0) / 1;
        if (0 >= c) return 0;
        if (1 <= c) return 1;

        for (var d = 0, e = 1, f = 0, g = 0; 8 > g; g++) {
            var f = pb(a, c),
            h = (pb(a, c + 1E-6) - f) / 1E-6;
            if (1E-6 > Math.abs(f - b)) return c;
            if (1E-6 > Math.abs(h)) {
				break;
            } else {
				f < b ? (d = c) : (e = c);
				c -= (f - b) / h;
			}
        }

        for (g = 0; 1E-6 < Math.abs(f - b) && 8 > g; g++) {
			f < b ? (d = c, c = (c + e) / 2) : (e = c, c = (c + d) / 2);
			f = pb(a, c);
		}

        return c;
    };
    var D = function(a, b) {
        this.s = {};
        this.o = [];
        this.v = this.w = 0;
        var c = arguments.length;

        if (1 < c) {
            if (c % 2) {
				throw Error("b");
            }
			for (var d = 0; d < c; d += 2) {
				this.set(arguments[d], arguments[d + 1]);
			}
        } else if (a) {
            var e;

            if (a instanceof D) {
				e = a.Na(),
				d = a.Oa();
			} else {
                var c = [],
					f = 0;

                for (e in a) {
					c[f++] = e;
                }

				e = c;
                c = [];
                f = 0;
                
				for (d in a) {
					c[f++] = a[d];
                }

				d = c;
            }

            for (c = 0; c < e.length; c++) {
				this.set(e[c], d[c]);
			}        
		}
    };
	D.prototype.Oa = function() {
        rb(this);
        for (var a = [], b = 0; b < this.o.length; b++) {
			a.push(this.s[this.o[b]]);
        }
		return a;
    };
	D.prototype.Na = function() {
        rb(this);
        return this.o.concat();
    };
    var rb = function(a) {
        if (a.w != a.o.length) {
            for (var b = 0, c = 0; b < a.o.length;) {
                var d = a.o[b];
                E(a.s, d) && (a.o[c++] = d);
                b++;
            }
            a.o.length = c;
        }
        if (a.w != a.o.length) {
            for (var e = {}, c = b = 0; b < a.o.length;) {
				d = a.o[b];
				E(e, d) || (a.o[c++] = d, e[d] = 1);
				b++;
			}
            a.o.length = c;
        }
    };
	D.prototype.get = function(a, b) {
        return E(this.s, a) ? this.s[a] : b;
    };
	D.prototype.set = function(a, b) {
        E(this.s, a) || (this.w++, this.o.push(a), this.v++);
        this.s[a] = b;
    };
	D.prototype.forEach = function(a, b) {
        for (var c = this.Na(), d = 0; d < c.length; d++) {
            var e = c[d];
            f = this.get(e);
            a.call(b, f, e, this);
        }
    };
	D.prototype.H = function(a) {
        rb(this);

        var b = 0,
			c = this.v,
			d = this,
			e = new Ya;

        e.o = function() {
            if (c != d.v) throw Error("c");
            if (b >= d.o.length) throw Xa;
            var e = d.o[b++];
            return a ? e : d.s[e];
        };

        return e;
    };
    var E = function(a, b) {
        return Object.prototype.hasOwnProperty.call(a, b);
    };
    var F = function(a, b) {
        w.call(this, a ? a.type : "");

        this.s = this.H = null;
        this.w = this.clientY = this.clientX = 0;
        this.o = null;

        if (a) {
            this.type = a.type;
            var c = a.changedTouches ? a.changedTouches[0] : null;
            this.H = a.target || a.srcElement;
            this.s = b;
            var d = a.relatedTarget;
            if (d && A) {
				try {
					ua(d.nodeName)
				} catch(e) {}
			}
            if (c === null) {
				this.clientX = undefined !== a.clientX ? a.clientX : a.pageX;
				this.clientY = undefined !== a.clientY ? a.clientY : a.pageY;
			} else {
				this.clientX = undefined !== c.clientX ? c.clientX : c.pageX,
				this.clientY = undefined !== c.clientY ? c.clientY : c.pageY;
			}
            this.w = a.keyCode || 0;
            this.o = a;

            a.defaultPrevented && this.preventDefault();
        }
    };
	t(F, w);
	F.prototype.stopPropagation = function() {
        F.Da.stopPropagation.call(this);
        if (this.o.stopPropagation) {
			this.o.stopPropagation();
		} else {
			this.o.cancelBubble = true;
		}
    };
	F.prototype.preventDefault = function() {
        F.Da.preventDefault.call(this);

        var a = this.o;
        if (a.preventDefault) {
			a.preventDefault();
		} else if (a.returnValue = false, nb) {
			try {
				if (a.ctrlKey || 112 <= a.keyCode && 123 >= a.keyCode) {
					a.keyCode = -1;
				}
			} catch(b) {}
		}
    };
	F.prototype.T = function() {
        return this.o;
    };
    var G = function(a, b) {
        this.v = this.S = this.w = "";
        this.R = null;
        this.T = this.H = "";
        this.o = false;
        var c;
        if (a instanceof G) {
            this.o = m(b) ? b : a.o;
            sb(this, a.w);
            this.S = a.S;
            this.v = a.v;
            tb(this, a.R);
            this.H = a.H;
            c = a.s;
            var d = new H;
            d.w = c.w;
            c.o && (d.o = new D(c.o), d.s = c.s);
            ub(this, d);
            this.T = a.T
        } else {
			if (a && (c = String(a).match(Qa))) {
				this.o = !!b;
				sb(this, c[1] || "", true);
				this.S = vb(c[2] || "");
				this.v = vb(c[3] || "", true);
				tb(this, c[4]);
				this.H = vb(c[5] || "", true);
				ub(this, c[6] || "", true);
				this.T = vb(c[7] || "");
			} else {
				this.o = !!b;
				this.s = new H(null, 0, this.o);
			}
		}
    };
	G.prototype.toString = function() {
        var a = [],
			b = this.w;

        b && a.push(wb(b, xb, true), ":");
        var c = this.v;
        if (c || "file" == b) {
			a.push("//");
			(b = this.S) && a.push(wb(b, xb, true), "@");
			a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g, "%$1"));
			c = this.R;
			null != c && a.push(":", String(c));
		}
        if (c = this.H) {
			this.v && "/" != c.charAt(0) && a.push("/");
			a.push(wb(c, "/" == c.charAt(0) ? yb : zb, true));
		}
		
		(c = this.s.toString()) && a.push("?", c);
		(c = this.T) && a.push("#", wb(c, Ab));

        return a.join("");
    };
    var sb = function(a, b, c) {
        a.w = c ? vb(b, true) : b;
        a.w && (a.w = a.w.replace(/:$/, ""));
    },
    tb = function(a, b) {
        if (b) {
            b = Number(b);
            if (isNaN(b) || 0 > b) {
				throw Error("d`" + b);
			}
            a.R = b;
        } else {
			a.R = null;
		}
    },
    ub = function(a, b, c) {
        if (b instanceof H) {
			a.s = b, Bb(a.s, a.o);
		} else {
			c || (b = wb(b, Cb));
			a.s = new H(b, 0, a.o);
		}
    },
    vb = function(a, b) {
        return a ? (b ? decodeURI(a.replace(/%25/g, "%2525")) : decodeURIComponent(a)) : "";
    },
    wb = function(a, b, c) {
        return p(a) ? (a = encodeURI(a).replace(b, Db), c && (a = a.replace(/%25([0-9a-fA-F]{2})/g, "%$1")), a) : null;
    },
    Db = function(a) {
        a = a.charCodeAt(0);
        return "%" + (a >> 4 & 15).toString(16) + (a & 15).toString(16);
    },
    xb = /[#\/\?@]/g, zb = /[\#\?:]/g,
	yb = /[\#\?]/g, Cb = /[\#\?@]/g,
	Ab = /#/g,
	H = function(a, b, c) {
        this.s = this.o = null;
        this.w = a || null;
        this.v = !!c;
    },
    I = function(a) {
        if (!a.o) {
			a.o = new D;
			a.s = 0;
			a.w && Ra(a.w, function(b, c) {
				Gb(a, decodeURIComponent(b.replace(/\+/g, " ")), c);
			});
		}
    },
    Gb = function(a, b, c) {
        I(a);
        a.w = null;
        b = Hb(a, b);
        var d = a.o.get(b);
        d || a.o.set(b, d = []);
        d.push(c);
        a.s += 1;
    },
    Ib = function(a, b) {
        I(a);
        b = Hb(a, b);
        if (E(a.o.s, b)) {
            a.w = null;
            a.s -= a.o.get(b).length;
            var c = a.o,
            d = b;
            E(c.s, d) && (delete c.s[d], c.w--, c.v++, c.o.length > 2 * c.w && rb(c));
        }
    },
    Jb = function(a, b) {
        I(a);
        b = Hb(a, b);
        return E(a.o.s, b);
    };
	H.prototype.Na = function() {
        I(this);
        for (var a = this.o.Oa(), b = this.o.Na(), c = [], d = 0; d < b.length; d++) {
			for (var e = a[d], f = 0; f < e.length; f++) {
				c.push(b[d]);
			}
		}
        return c;
    };
	H.prototype.Oa = function(a) {
        I(this);
        var b = [];
        if (p(a)) {
			Jb(this, a) && (b = Ma(b, this.o.get(Hb(this, a))));
        } else {
            a = this.o.Oa();
            for (var c = 0; c < a.length; c++) {
				b = Ma(b, a[c]);
			}
        }
        return b;
    };
	H.prototype.set = function(a, b) {
        I(this);
        this.w = null;
        a = Hb(this, a);
        Jb(this, a) && (this.s -= this.o.get(a).length);
        this.o.set(a, [b]);
        this.s += 1;
        return this;
    };
	H.prototype.get = function(a, b) {
        var c = a ? this.Oa(a) : [];
        return 0 < c.length ? String(c[0]) : b;
    };
	H.prototype.toString = function() {
        if (this.w) {
			return this.w;
		}
        if (!this.o) {
			return "";
		}
        for (var a = [], b = this.o.Na(), c = 0; c < b.length; c++) {
			for (var d = b[c], e = encodeURIComponent(String(d)), d = this.Oa(d), f = 0; f < d.length; f++) {
				var g = e;
				"" !== d[f] && (g += "=" + encodeURIComponent(String(d[f])));
				a.push(g);
			}
		}
        return this.w = a.join("&");
    };
    var Hb = function(a, b) {
        var c = String(b);
        a.v && (c = c.toLowerCase());
        return c;
    },
    Bb = function(a, b) {
        if (b && !a.v) {
			I(a);
			a.w = null;
			a.o.forEach(function(a, b) {
				var e = b.toLowerCase();
				if (b != e) {
					Ib(this, b);
					Ib(this, e);
					if (a.length > 0) {
						this.w = null;
						this.o.set(Hb(this, e), Na(a));
						this.s += a.length;
					}
				}
			}, a);
		}
        a.v = b;
    };

    var Kb,
	J = navigator.userAgent,
    Lb = window.location.href,
    Mb = -1 != J.indexOf("iPad") || -1 != J.indexOf("iPhone") || -1 != J.indexOf("iPod"),
	Nb = -1 != J.toLowerCase().indexOf("gsa"),
	Ob = Mb && Nb,
	Pb = Nb && !Mb,
	Qb = Mb || -1 != J.indexOf("Android") || -1 != J.indexOf("Mobile") || -1 != J.indexOf("Silk"),
	Rb = 0 <= J.indexOf("MSIE"),
	Sb = -1 != Lb.indexOf("/logos/") && -1 != Lb.indexOf(".html"),
	Tb = function(a, b) {
        for (var c = 1; c < arguments.length; c += 2) {
            var d = arguments[c],
            e = arguments[c + 1],
            f = a.style;
            f && d in f ? (f[d] = e) : (d in a ? a[d] = e : (Rb && f && "opacity" == d && (a.zoom = 1, d = (f.filter || "").replace(/alpha\([^)]*\)/, ""), isNaN(parseFloat(e)) || (d += "alpha(opacity=" + 100 * e + ")"), f.filter = d))
        }
    },
    Ub = ["Moz", "ms", "O", "webkit"], Vb = function(a, b, c) {
        for (var d = 0, e; e = Ub[d++]; ) {
			a.style[e + b] = c;
		}
        a.style[b.charAt(0).toLowerCase() + b.substr(1)] = c;
    },
    Wb = ["", "moz", "ms", "o", "webkit"], Xb = function(a, b) {
        if (!a) return null;
        for (var c = 0; c < Wb.length; c++) {
            var d = Wb[c],
            e = b;
            0 < d.length && (e = b.charAt(0).toUpperCase() + b.substr(1));
            d += e;
            if ("undefined" != typeof a[d]) return d
        }
        return null
    },
    Yb = function(a, b) {
        var c = window.google ? window.google.doodle: null;
        return c && void 0 != c[a] ? c[a] : b
    },
    Zb = Yb("alt", ""), $b = function() {
        for (var a = ["requestAnimationFrame", "mozRequestAnimationFrame", "msRequestAnimationFrame", "oRequestAnimationFrame", "webkitRequestAnimationFrame"], b = 0; b < a.length; b++) {
            var c = window[a[b]];
            if (c) return function(a, b, d) {
                return c(function(c) {
                    return a.call(d, c)
                },
                b)
            }
        }
        var d = 0,
        e = 33,
        f = 50;
        return function(a, c, b) {
            c && 0 > --f && (1.25 < c / e ? (d = 0, e = Math.min(66, ++e)) : 10 < ++d && (d = 0, e = Math.max(17, --e)));
            window.setTimeout(function(c) {
                a.call(b, c)
            },
            e)
        }
    },
    ac = function(a, b, c) {
        ac = $b();
        return ac(a, b, c)
    },
    bc = function(a) {
        if (window.google && window.google.log) {
            var b;
            Kb || (b = document.getElementById("hplogoved")) && (Kb = b.getAttribute("data-ved")); (b = Kb) && (a += "&ved=" + b);
            window.google.log("doodle", a)
        } else ka(a)
    };
    var cc = "closure_lm_" + (1E6 * Math.random() | 0), dc = {},
    ec = 0, fc = function(a, b, c, d, e) {
        if ("array" == ba(b)) {
            for (var f = 0; f < b.length; f++) fc(a, b[f], c, d, e);
            return null
        }
        c = gc(c);
        if (a && a[Ea]) a = a.listen(b, c, d, e);
        else {
            if (!b) throw Error("f");
            var f = !!d,
            g = hc(a);
            g || (a[cc] = g = new Sa(a));
            c = Ua(g, b, c, d, e);
            if (!c.o) {
                d = ic();
                c.o = d;
                d.src = a;
                d.listener = c;
                if (a.addEventListener) a.addEventListener(b.toString(), d, f);
                else if (a.attachEvent) a.attachEvent(jc(b.toString()), d);
                else throw Error("g");
                ec++
            }
            a = c
        }
        return a
    },
    ic = function() {
        var a = kc,
        b = mb ?
        function(c) {
            return a.call(b.src, b.listener, c)
        }: function(c) {
            c = a.call(b.src, b.listener, c);
            if (!c) return c
        };
        return b
    },
    lc = function(a, b, c, d, e) {
        if ("array" == ba(b)) for (var f = 0; f < b.length; f++) lc(a, b[f], c, d, e);
        else c = gc(c),
        a && a[Ea] ? a.unlisten(b, c, d, e) : a && (a = hc(a)) && (b = Wa(a, b, c, !!d, e)) && mc(b)
    },
    mc = function(a) {
        if (!ca(a) && a && !a.Pa) {
            var b = a.src;
            if (b && b[Ea]) Va(b.s, a);
            else {
                var c = a.type,
                d = a.o;
                b.removeEventListener ? b.removeEventListener(c, d, a.Va) : b.detachEvent && b.detachEvent(jc(c), d);
                ec--; (c = hc(b)) ? (Va(c, a), 0 == c.s && (c.src = null, b[cc] = null)) : Pa(a)
            }
        }
    },
    jc = function(a) {
        return a in dc ? dc[a] : dc[a] = "on" + a
    },
    oc = function(a, b, c, d) {
        var e = !0;
        if (a = hc(a)) if (b = a.o[b.toString()]) for (b = b.concat(), a = 0; a < b.length; a++) {
            var f = b[a];
            f && f.Va == c && !f.Pa && (f = nc(f, d), e = e && !1 !== f)
        }
        return e
    },
    nc = function(a, b) {
        var c = a.listener,
        d = a.Wa || a.src;
        a.Ua && mc(a);
        return c.call(d, b)
    },
    kc = function(a, b) {
        if (a.Pa) return ! 0;
        if (!mb) {
            var c;
            if (! (c = b)) a: {
                c = ["window", "event"];
                for (var d = l,
                e; e = c.shift();) if (null != d[e]) d = d[e];
                else {
                    c = null;
                    break a
                }
                c = d
            }
            e = c;
            c = new F(e, this);
            d = !0;
            if (! (0 > e.keyCode || void 0 != e.returnValue)) {
                a: {
                    var f = !1;
                    if (0 == e.keyCode) try {
                        e.keyCode = -1;
                        break a
                    } catch(k) {
                        f = !0
                    }
                    if (f || void 0 == e.returnValue) e.returnValue = !0
                }
                e = [];
                for (f = c.s; f; f = f.parentNode) e.push(f);
                for (var f = a.type,
                g = e.length - 1; ! c.v && 0 <= g; g--) {
                    c.s = e[g];
                    var h = oc(e[g], f, !0, c),
                    d = d && h
                }
                for (g = 0; ! c.v && g < e.length; g++) c.s = e[g],
                h = oc(e[g], f, !1, c),
                d = d && h
            }
            return d
        }
        return nc(a, new F(b, this))
    },
    hc = function(a) {
        a = a[cc];
        return a instanceof Sa ? a: null
    },
    pc = "__closure_events_fn_" + (1E9 * Math.random() >>> 0), gc = function(a) {
        if ("function" == ba(a)) return a;
        a[pc] || (a[pc] = function(b) {
            return a.handleEvent(b)
        });
        return a[pc]
    };
    var rc = function(a, b, c, d) {
        return b + (d || qc)(a) * (c - b)
    },
    qc = function(a, b, c, d) {
        var e = new ob(a, b, c, d);
        return function(a) {
            a = qb(e, a);
            if (0 == a) a = 0;
            else if (1 == a) a = 1;
            else {
                var c = y(0, e.w, a),
                b = y(e.w, e.v, a),
                d = y(e.v, 1, a),
                c = y(c, b, a),
                b = y(b, d, a);
                a = y(c, b, a)
            }
            return a
        }
    } (.25, .1, .25, 1);
    var K, sc = {
        name: "desktopHomepage",
        Ea: !0,
        Fa: !0,
        ya: !1,
        Aa: !1,
        Ba: !1,
        Ca: !1
    },
    tc = {
        name: "tabletHomepage",
        Ea: !0,
        Fa: !0,
        ya: !1,
        Aa: !1,
        Ba: !1,
        Ca: !1
    },
    uc = {
        name: "igsa",
        Ea: !0,
        Fa: !1,
        ya: !0,
        Aa: !0,
        Ba: !0,
        Ca: !0
    },
    vc = {
        name: "agsa",
        Ea: !0,
        Fa: !1,
        ya: !1,
        Aa: !0,
        Ba: !0,
        Ca: !0
    },
    wc = {
        name: "allo",
        Ea: !0,
        Fa: !1,
        ya: !1,
        Aa: !0,
        Ba: !1,
        Ca: !1
    },
    xc = {
        name: "desktopChromeNTP",
        Ea: !1,
        Fa: !0,
        ya: !1,
        Aa: !1,
        Ba: !1,
        Ca: !1
    },
    yc = {
        name: "fpdoodle",
        Ea: !0,
        Fa: !1,
        ya: !1,
        Aa: !0,
        Ba: !0,
        Ca: !0
    },
    zc = {
        name: "slashdoodlesDesktop",
        Ea: !0,
        Fa: !1,
        ya: !1,
        Aa: !0,
        Ba: !1,
        Ca: !1
    },
    Ac = {
        name: "slashdoodlesMobile",
        Ea: !0,
        Fa: !1,
        ya: !1,
        Aa: !0,
        Ba: !0,
        Ca: !0
    },
    Bc = {
        name: "fallbackMobile",
        Ea: !0,
        Fa: !1,
        ya: !1,
        Aa: !0,
        Ba: !0,
        Ca: !0
    },
    Cc = {
        name: "fallbackDesktop",
        Ea: !0,
        Fa: !1,
        ya: !1,
        Aa: !1,
        Ba: !1,
        Ca: !1
    };
    var L = function() {
        this.V = !0;
        this.W = !1;
        this.S = [];
        this.U = !1;
        this.s = this.H = this.v = 0;
        this.R = Dc
    }; t(L, u); aa(L);
    var Dc = 1E3 / 60,
    Fc = function(a) {
        this.s = Ec;
        this.v = a;
        this.o = L.ra().v;
        this.w = 0
    },
    Gc = function(a) {
        var b = a.v(a.w);
        a.w++;
        a.o = L.ra().v + a.s / L.ra().R;
        return b
    },
    Jc = function(a) {
        var b = Hc;
        a = new Fc(a);
        Ic(b, a)
    },
    Ic = function(a, b) {
        a.S.push(b);
        a.U = !0
    },
    Lc = function(a) {
        if (a.V) a.W = !1;
        else {
            a.W = !0;
            Kc(a);
            a.U && (a.S.sort(function(a, c) {
                return a.o == c.o ? c.s - a.s: a.o - c.o
            }), a.U = !1);
            for (var b = 0,
            c = 0,
            d; d = a.S[c]; c++) if (d.o <= a.v) Gc(d) && Ic(a, d),
            b++;
            else break;
            a.S.splice(0, b);
            a.v++;
            ac(function() {
                Lc(a)
            })
        }
    },
    Kc = function(a) {
        var b = (new Date).getTime();
        30 < a.v && a.H && (b - a.H >= 1.05 * a.R ? a.s++:a.s >>= 1, 20 < a.s && (a.R = Math.min(50, 1.2 * a.R), a.s = 0));
        a.H = b
    },
    M = function(a) {
        a.V = !1;
        a.W || Lc(a)
    }; L.prototype.o = function() {
        this.V = !0;
        this.S = [];
        this.v = 0;
        this.U = !1;
        this.R = Dc;
        this.H = this.s = 0;
        L.Da.o.call(this)
    };
    var Oc = function(a, b, c) {
        u.call(this);
        this.$ = a;
        this.ma = b;
        this.ta = c;
        this.H = this.v = this.U = !1;
        this.W = r();
        this.qa = Xb(document, "hidden");
        this.S = (this.V = Xb(document, "visibilityState")) ? this.V.replace(/state$/i, "change").toLowerCase() : null;
        Mc(this);
        Nc(this)
    }; t(Oc, u);
    var Mc = function(a) {
        Pb ? Pc(a,
        function() {
            Qc(a)
        }) : Qc(a)
    },
    Qc = function(a) {
        a.s = function() {
            var c;
            window.agsa_ext && window.agsa_ext.getPageVisibility && "hidden" == window.agsa_ext.getPageVisibility() ? c = !0 : (c = document[a.V], c = document[a.qa] || "hidden" == c);
            a.U = c;
            a.U ? Rc(a) : Sc(a)
        };
        var b = window.agsa_ext;
        b && b.registerPageVisibilityListener ? (google.doodle || (google.doodle = {}), google.doodle.pvc = function() {
            a.s && a.s()
        },
        b.registerPageVisibilityListener("google.doodle.pvc();")) : a.S && document.addEventListener(a.S, a.s, !1)
    },
    Pc = function(a, b) {
        window.agsa_ext ? b() : a.ka = window.setTimeout(function() {
            Mc(a)
        },
        100)
    }; Oc.prototype.o = function() {
        window.clearTimeout(this.R);
        window.clearTimeout(this.ka);
        this.s && (window.agsa_ext && window.agsa_ext.registerPageVisibilityListener ? this.s = null: this.S && document.removeEventListener && document.removeEventListener(this.S, this.s, !1));
        Oc.Da.o.call(this)
    };
    var Rc = function(a) {
        var b = a.U || a.v;
        a.H && !b ? (a.H = !1, a.ta(), Nc(a)) : !a.H && b && (a.H = !0, a.ma())
    },
    Nc = function(a) {
        a.R && window.clearTimeout(a.R);
        var b = Math.max(100, a.$ - Tc(a));
        a.R = window.setTimeout(function() {
            a.R = null;
            a.v = Tc(a) >= a.$;
            a.v || Nc(a);
            Rc(a)
        },
        b)
    },
    Tc = function(a) {
        return r() - a.W
    },
    Sc = function(a) {
        a.W = r();
        a.v = !1;
        Rc(a)
    };
    var Vc = function(a, b) {
        this.o = [];
        this.w = [];
        for (var c = 0,
        d; d = b[c]; c++) Uc(this, new oa(a + d.filename), d.size)
    },
    Uc = function(a, b, c) {
        a.o.push(b);
        a.w.push(c);
        return a.o.length - 1
    },
    Xc = function(a) {
        var b = Wc.o[ca(0) ? 0 : 0[0]];
        a && na(b, a);
        b.w()
    }; Vc.prototype.s = function(a, b, c, d, e, f) {
        var g = a[3],
        h = a[4],
        k = g,
        x = h;
        void 0 != e && (k *= e, x *= e);
        f && (c -= k / 2, d -= x / 2);
        e = a[1];
        f = a[2];
        void 0 != c && (e += 0, f += 0);
        a = this.o[ca(a) ? a: a[0]];
        if (!a.s) throw Error("h");
        b.drawImage(a.o, e, f, g, h, c, d, k, x)
    };
    var Ec = 1E3 / 60;
    var Yc = function() {}; aa(Yc);
    var $c = function() {
        var a = Zc;
        a.s = r();
        a.o = a.s
    }; Yc.prototype.log = function(a, b, c) {
        var d = r(),
        e = d - this.o;
        this.o = d;
        a = ["slideshow", "a:" + a, "s:" + b, "dt:" + e];
        c && a.push("n:" + c);
        bc(a.join(","))
    };
    var N = function(a) {
        u.call(this);
        this.U = a;
        this.s = {}
    }; t(N, u);
    var ad = []; N.prototype.listen = function(a, b, c, d) {
        return bd(this, a, b, c, d)
    };
    var bd = function(a, b, c, d, e, f) {
        "array" != ba(c) && (c && (ad[0] = c.toString()), c = ad);
        for (var g = 0; g < c.length; g++) {
            var h = fc(b, c[g], d || a.handleEvent, e || !1, f || a.U || a);
            if (!h) break;
            a.s[h.lb] = h
        }
        return a
    }; N.prototype.unlisten = function(a, b, c, d, e) {
        if ("array" == ba(b)) for (var f = 0; f < b.length; f++) this.unlisten(a, b[f], c, d, e);
        else c = c || this.handleEvent,
        e = e || this.U || this,
        c = gc(c),
        d = !!d,
        b = a && a[Ea] ? Wa(a.s, String(b), c, d, e) : a ? (a = hc(a)) ? Wa(a, b, c, d, e) : null: null,
        b && (mc(b), delete this.s[b.lb]);
        return this
    };
    var cd = function(a) {
        ra(a.s,
        function(a, c) {
            this.s.hasOwnProperty(c) && mc(a)
        },
        a);
        a.s = {}
    }; N.prototype.o = function() {
        N.Da.o.call(this);
        cd(this)
    }; N.prototype.handleEvent = function() {
        throw Error("i");
    };
    var O = function() {
        u.call(this);
        this.s = new Sa(this);
        this.U = this;
        this.H = null
    }; t(O, u); O.prototype[Ea] = !0; O.prototype.removeEventListener = function(a, b, c, d) {
        lc(this, a, b, c, d)
    };
    var ed = function(a, b) {
        var c, d = a.H;
        if (d) for (c = []; d; d = d.H) c.push(d);
        var d = a.U,
        e = b,
        f = e.type || e;
        if (p(e)) e = new w(e, d);
        else if (e instanceof w) e.H = e.H || d;
        else {
            var g = e,
            e = new w(f, d);
            ta(e, g)
        }
        var g = !0,
        h;
        if (c) for (var k = c.length - 1; ! e.v && 0 <= k; k--) h = e.s = c[k],
        g = dd(h, f, !0, e) && g;
        e.v || (h = e.s = d, g = dd(h, f, !0, e) && g, e.v || (g = dd(h, f, !1, e) && g));
        if (c) for (k = 0; ! e.v && k < c.length; k++) h = e.s = c[k],
        g = dd(h, f, !1, e) && g;
        return g
    }; O.prototype.o = function() {
        O.Da.o.call(this);
        if (this.s) {
            var a = this.s,
            b = 0,
            c;
            for (c in a.o) {
                for (var d = a.o[c], e = 0; e < d.length; e++)++b,
                Pa(d[e]);
                delete a.o[c];
                a.s--
            }
        }
        this.H = null
    }; O.prototype.listen = function(a, b, c, d) {
        return Ua(this.s, String(a), b, c, d)
    }; O.prototype.unlisten = function(a, b, c, d) {
        var e;
        e = this.s;
        a = String(a).toString();
        if (a in e.o) {
            var f = e.o[a];
            b = Ta(f, b, c, d); - 1 < b ? (Pa(f[b]), Array.prototype.splice.call(f, b, 1), 0 == f.length && (delete e.o[a], e.s--), e = !0) : e = !1
        } else e = !1;
        return e
    };
    var dd = function(a, b, c, d) {
        b = a.s.o[String(b)];
        if (!b) return ! 0;
        b = b.concat();
        for (var e = !0,
        f = 0; f < b.length; ++f) {
            var g = b[f];
            if (g && !g.Pa && g.Va == c) {
                var h = g.listener,
                k = g.Wa || g.src;
                g.Ua && Va(a.s, g);
                e = !1 !== h.call(k, d) && e
            }
        }
        return e && 0 != d.nb
    };
    var gd = function() {
        fd();
        return K.ya
    },
    fd = function() {
        null == K && (Ob ? K = uc: Pb ? K = vc: -1 != J.indexOf("gbot") ? K = wc: document.getElementById("fkbx") && !Qb ? K = xc: 0 <= Lb.indexOf("fpdoodle=1") && document.getElementById("fpdoodle") ? K = yc: document.querySelector("body.hp") ? K = Qb ? tc: sc: Sb ? K = Qb ? Ac: zc: (window.console && window.console.log("Error: can't determine environment"), K = Qb ? Bc: Cc), window.console && window.console.log("doodle.environment is " + K.name))
    };
    var hd = function(a, b, c) {
        this.v = a;
        this.ka = b;
        this.W = c || null;
        this.o = [];
        this.s = null;
        this.R = this.T = 0;
        this.S = this.V = !1;
        this.$ = [];
        this.U = this.v.width / this.v.clientWidth;
        this.H = this.v.height / this.v.clientHeight;
        this.qa = [this.v];
        this.ma = !1
    },
    id = function() {
        var a = new ha;
        a.contains = function() {
            return ! 0
        };
        return a
    } (), jd = function(a, b) {
        a.U = a.v.width / a.v.clientWidth;
        a.H = a.v.height / a.v.clientHeight;
        a.ma = b
    },
    kd = function(a, b) {
        for (var c = null,
        d = 0; d < a.o.length; d++) a.o[d].o === b && (c = a.o[d]);
        c && (La(a.o, c), a.o.unshift(c))
    }; hd.prototype.handleEvent = function(a) {
        var b, c;
        c = (c = (c = a.o) || window.event) ? (b = c.targetTouches && c.targetTouches[0] || c.changedTouches && c.changedTouches[0]) && void 0 !== b.pageX ? [b.pageX, b.pageY] : void 0 !== c.clientX ? [c.clientX + ("rtl" == document.dir ? -1 : 1) * (document.body.scrollLeft || document.documentElement.scrollLeft || 0), c.clientY + (document.body.scrollTop || document.documentElement.scrollTop || 0)] : void 0 !== c.pageX ? [c.pageX, c.pageY] : [0, 0] : [0, 0];
        b = this.v;
        var d = 0,
        e = 0;
        if (b) {
            do d += b.offsetLeft,
            e += b.offsetTop;
            while (b = b.offsetParent)
        }
        b = [d, e];
        b = [c[0] - b[0], c[1] - b[1]];
        d = b[0] * this.U;
        c = b[1] * this.H;
        this.ma && (d = b[1] * this.H, c = 0 - b[0] * this.U);
        b = d;
        this.W && Sc(this.W);
        this.T = b;
        this.R = c;
        c = a.type;
        this.S && 0 == c.indexOf("mouse") || (b = {
            touchstart: "mousedown",
            touchend: "mouseup",
            touchmove: "mousemove"
        },
        c in b && (this.S = !0, c = b[c]), "mousedown" == c && (a.preventDefault(), this.ka && this.ka.focus()), ld(this, c, this.T, this.R))
    };
    var ld = function(a, b, c, d) {
        if (!a.V && "mousedown" == b) {
            a.V = !0;
            for (var e = 0; e < a.$.length; e++) a.$[e]()
        }
        if ("mousedown" == b) {
            if (!a.w) for (e = 0; e < a.o.length; e++) {
                var f = a.o[e];
                if (f.o.contains(c, d)) {
                    a.w = f;
                    f.s("mousedown", c, d);
                    break
                }
            }
        } else if ("mouseup" == b) a.w ? (a.w.s("mouseup", c, d), a.w = null) : a.s && a.s.s("mouseup", c, d);
        else if ("mousemove" == b || "areamove" == b) {
            for (var g = null,
            e = 0; e < a.o.length; e++) if (f = a.o[e], f.o.contains(c, d)) {
                g = f;
                break
            }
            a.s != g && (a.s && a.s.s("mouseout", c, d), g && g.s("mouseover", c, d), a.s = g);
            if ("mousemove" == b) for (a.w && a.w.s("mousemove", c, d), e = 0; e < a.o.length; e++) f = a.o[e],
            f != a.w && f.o.contains(c, d) && f.s("mousemove", c, d)
        } else "mouseout" == b && (a.s && a.s.s("mouseout", c, d), a.w = null, a.s = null);
        md(a)
    },
    md = function(a) {
        for (var b = a.s && a.s.o != id ? "pointer": "default", c = 0, d; d = a.qa[c]; c++) Tb(d, "cursor", b)
    },
    nd = function(a, b) {
        this.o = a;
        this.s = b
    };
    var P = function() {
        Vc.call(this, "/logos/2016/slideshow/", od)
    }; t(P, Vc);
    var od = [{
        filename: "main-sprite.png",
        size: [661, 291]
    }], pd = [0, 0, 0, 192, 192], qd = [0, 195, 0, 192, 192], rd = [0, 0, 195, 96, 96], sd = [0, 585, 0, 76, 76], td = [0, 585, 79, 76, 76], ud = [0, 585, 158, 76, 76], vd = [0, 99, 195, 96, 96], wd = [0, 390, 0, 192, 192], xd = [0, 198, 195, 96, 96], yd = [0, 297, 195, 96, 96], zd = [0, 396, 195, 96, 96], Ad = [0, 495, 195, 76, 76]; aa(P);
    var Q = function(a, b, c, d, e) {
        this.o = a;
        this.s = b;
        this.v = c;
        this.T = d;
        this.w = e || 0;
        this.H = pa()
    },
    R = function(a) {
        var b = {},
        c = (pa() - a.H - a.w) / a.v;
        if (0 >= c) return a.o;
        if (1 <= c) return a.s;
        for (var d in a.o) a.s.hasOwnProperty(d) && (b[d] = a.T(c, a.o[d], a.s[d]));
        return b
    },
    Bd = function(a) {
        return pa() - a.H - a.w >= a.v
    },
    S = function(a, b, c) {
        return b + a * (c - b)
    },
    Cd = function(a) {
        return function(b, c, d) {
            b = Math.pow(b, a || .5);
            return c + Math.min(1, Math.max(0, b)) * (d - c)
        }
    },
    Dd = function(a, b, c) {
        return S(1 - 2 * Math.abs(a - .5), b, c)
    };
    var Fd = function(a) {
        O.call(this);
        this.v = a;
        fc(a, Ed, this.S, !1, this);
        fc(a, "click", this.R, !1, this)
    }; t(Fd, O);
    var Ed = A ? "keypress": "keydown"; Fd.prototype.S = function(a) { (13 == a.w || ab && 3 == a.w) && Gd(this, a)
    }; Fd.prototype.R = function(a) {
        Gd(this, a)
    };
    var Gd = function(a, b) {
        var c = new Hd(b);
        if (ed(a, c)) {
            c = new Id(b);
            try {
                ed(a, c)
            } finally {
                b.stopPropagation()
            }
        }
    }; Fd.prototype.o = function() {
        Fd.Da.o.call(this);
        lc(this.v, Ed, this.S, !1, this);
        lc(this.v, "click", this.R, !1, this);
        delete this.v
    };
    var Id = function(a) {
        F.call(this, a.o);
        this.type = "action"
    }; t(Id, F);
    var Hd = function(a) {
        F.call(this, a.o);
        this.type = "beforeaction"
    }; t(Hd, F);
    var Jd = function(a, b) {
        O.call(this);
        var c = this.v = a,
        d = typeof c;
        if (c = ("object" == d && null != c || "function" == d) && 1 == c.nodeType ? this.v: this.v ? this.v.body: null) d = 9 == c.nodeType ? c: c.ownerDocument || c.document,
        d.defaultView && d.defaultView.getComputedStyle && (c = d.defaultView.getComputedStyle(c, null)) && (c.direction || c.getPropertyValue("direction"));
        this.R = fc(this.v, A ? "DOMMouseScroll": "mousewheel", this, b)
    }; t(Jd, O); Jd.prototype.handleEvent = function(a) {
        var b = 0,
        c = a.o;
        "mousewheel" == c.type ? (a = Kd( - c.wheelDelta), b = m(c.wheelDeltaX) ? Kd( - c.wheelDeltaY) : a) : (a = c.detail, 100 < a ? a = 3 : -100 > a && (a = -3), m(c.axis) && c.axis === c.HORIZONTAL_AXIS || (b = a));
        ca(this.S) && (b = Math.min(Math.max(b, -this.S), this.S));
        b = new Ld(a, c, 0, b);
        ed(this, b)
    };
    var Kd = function(a) {
        return ab && (bb || cb) && 0 != a % 40 ? a: a / 40
    }; Jd.prototype.o = function() {
        Jd.Da.o.call(this);
        mc(this.R);
        this.R = null
    };
    var Ld = function(a, b, c, d) {
        F.call(this, b);
        this.type = "mousewheel";
        this.detail = a;
        this.deltaY = d
    }; t(Ld, F);
    var Md = function() {
        this.U = this.V = this.W = this.o = this.v = null;
        this.$ = !1;
        this.T = null;
        this.R = this.s = !1;
        this.w = !0;
        this.S = this.H = !1
    }; aa(Md); fd();
    var Nd = K.Ba,
    Od = Xb(document, "fullscreenElement"), Pd = document[Xb(document, "exitFullscreen")], Sd = function(a, b, c, d) {
        var e = Qd;
        e.o = a;
        e.v = b;
        e.W = d;
        e.T = a[Xb(a, "requestFullscreen")];
        a = document[Xb(document, "fullscreenEnabled")] && m(e.T) && m(Pd);
        fd();
        e.s = K.Ca && a;
        fd();
        e.R = K.Aa;
        e.w = !0;
        if (e.s || e.R) Tb(document.body, "margin", "0"),
        Tb(e.o, "overflow", "visible", "width", "100%", "height", "100%"),
        document.body.scrollLeft = 0,
        c.listen(window, "scroll", Rd)
    },
    Td = function() {
        var a = Qd;
        return function(b) {
            "mousedown" == b && (a.S = !0)
        }
    },
    Rd = function(a) {
        a.preventDefault();
        a.stopPropagation();
        return ! 1
    };
    var Ud = function(a, b, c, d, e) {
        N.call(this);
        this.V = a;
        this.ka = b;
        this.$ = c;
        this.W = d;
        e && (this.v && this.unlisten(this.v, "action", this.H), e && (this.v = new Fd(e), Ca(this, fa(Da, this.v)), this.H = q(this.R, this), this.listen(this.v, "action", this.H)))
    }; t(Ud, N); Ud.prototype.R = function() {
        Vd() && !v("Trident") && !v("MSIE") && window.gapi && window.gapi.load ? (window.gapi.load("share", q(this.S, this)), bc("gplus,li")) : (window.open("https://plus.google.com/share?url=" + this.V), bc("gplus,lo"))
    };
    var Vd = function() {
        if (!window.gbar) return ! 1;
        var a = !!(window.gbar.sos && 0 < window.gbar.sos().length),
        b = !(!window.gbar.so || !window.gbar.so());
        return a || b
    }; Ud.prototype.S = function() {
        if (window.gapi && window.gapi.share) {
            var a = {
                items: [{
                    type: "http://schema.org/WebPage",
                    id: location.protocol + "//" + location.host,
                    properties: {
                        url: [this.V],
                        name: [this.ka],
                        image: [this.W]
                    }
                }]
            },
            b = window.location.toString().match(/[?&]authuser=(\d+)/),
            b = b && b[1],
            c = Vd() || !!window.google.doodle.sf;
            window.gapi.share.lightbox(a, {
                isLoggedInForGooglePlus: c,
                onLoginPopupBlocked: function() {
                    bc("gplus,popupblocked")
                },
                onLoginStateChanged: q(function() {
                    ga("google.doodle.sf");
                    this.S()
                },
                this),
                editorText: this.$,
                sessionIndex: b || "",
                sourceForLogging: "doodle"
            })
        }
    };
    var T = function(a, b, c, d, e) {
        this.w = a;
        this.R = b;
        this.S = c;
        this.T = d;
        this.v = e || 1;
        this.o = null
    },
    Wd = function(a) {
        P.ra();
        return a.w[3]
    },
    U = function(a) {
        var b = a.R;
        a.o && (a = R(a.o), m(a.x) && (b = a.x));
        return b
    },
    Xd = function(a) {
        var b = a.S;
        a.o && (a = R(a.o), m(a.y) && (b = a.y));
        return b
    },
    Yd = function(a) {
        var b = a.T;
        a.o && (a = R(a.o), m(a.opacity) && (b = a.opacity));
        return b
    },
    Zd = function(a) {
        var b = 0;
        a.o && (a = R(a.o), m(a.angle) && (b = a.angle));
        return b
    }; T.prototype.H = function() {
        this.o = null
    }; T.prototype.H = function() {
        this.o = null
    };
    var $d = function(a) {
        return null != a.o && !Bd(a.o)
    }; T.prototype.s = function(a) {
        var b = P.ra();
        a.save();
        a.globalAlpha = Yd(this);
        var c = Wd(this),
        d;
        P.ra();
        d = this.w[4];
        0 == Zd(this) ? b.s(this.w, a, U(this), Xd(this), this.v) : (c *= this.v, d *= this.v, a.translate(U(this) + c / 2, Xd(this) + c / 2), a.rotate(Zd(this)), b.s(this.w, a, -(c / 2), -(d / 2), this.v));
        a.restore()
    };
    var Qd = Md.ra(), ae = function(a, b) {
        this.w = a;
        this.H = b;
        this.o = 0;
        this.v = document.getElementsByTagName("input")
    }; ae.prototype.handleEvent = function(a) {
        if (a && a.T && this.H(a)) {
            this.s && Sc(this.s);
            var b = a.o,
            c;
            if (c = b.keyCode) {
                a: {
                    c = 0;
                    for (var d; d = this.v[c++];) if ("q" == d.name && d.value.match(/[^ ]/)) {
                        c = !0;
                        break a
                    }
                    c = !1
                }
                c = !c
            }
            if (c) {
                if (c = "keydown" == a.type) this.o++,
                c = 1 >= this.o;
                c ? (this.w(a), b.preventDefault && b.preventDefault()) : "keyup" == a.type && (this.o = 0)
            }
        }
    };
    var W = function(a, b, c, d) {
        u.call(this);
        this.V = b;
        this.qa = b.width;
        this.H = new N(this);
        Ca(this, fa(Da, this.H));
        var e = this;
        this.W = new Oc(d || 6E4,
        function() {
            e.$()
        },
        function() {
            e.ta()
        });
        Ca(this, fa(Da, this.W));
        this.s = new hd(b, a, this.W);
        this.H.listen(a, "mousedown mouseup mousemove mouseout touchstart touchend touchmove".split(" "),
        function(a) {
            e.s.handleEvent(a)
        },
        !0);
        Sd(a, m(c) ? [b].concat(c) : [b], this.H,
        function(a) {
            jd(e.s, a)
        });
        this.H.listen(b, "touchstart",
        function() {
            var a = Qd;
            a.s && (a.S ? (Pd.call(document), a.S = !1) : a.T.call(a.o))
        });
        this.wa = this.ma();
        this.v = this.ka();
        this.S = 1;
        a = this.v[3];
        this.U = b.width - a;
        this.R = C(this.U, 0, a, this.v[4]);
        V(this, this.R, Td())
    }; t(W, u); W.prototype.o = function() {
        var a = Qd;
        a.v = null;
        a.o = null;
        a.W = null;
        a.V = null;
        a.U = null;
        a.$ = !1;
        a.T = null;
        a.s = !1;
        a.R = !1;
        a.w = !0;
        a.H = !1;
        a.S = !1;
        W.Da.o.call(this)
    };
    var be = function(a) {
        var b = Qd;
        if (b.s || b.R) {
            var c = null != document[Od],
            d = window.innerWidth,
            e = window.innerHeight;
            0 == window.scrollX && 0 == window.scrollY || window.scrollTo(0, 0);
            if (d != b.V || e != b.U || c != b.$ || b.w) {
                b.H = d < e;
                for (var f = !1,
                g = 0; g < b.v.length; ++g) {
                    var h = b.v[g],
                    k = h.width,
                    x = h.height;
                    Nd && 0 == g && (f = k < x != b.H);
                    var za = f ? Math.min(d / x, e / k) : Math.min(d / k, e / x),
                    k = za * k,
                    x = za * x,
                    Eb,
                    Fb;
                    f ? (za = (d - x) / 2 + x, Eb = (e - k) / 2, Fb = "rotate(90deg)") : (za = (d - k) / 2, Eb = (e - x) / 2, Fb = "");
                    Vb(h, "TransformOrigin", "0 0");
                    Vb(h, "Transform", Fb);
                    Tb(h, "position", "absolute", "width", k + "px", "height", x + "px", "left", za + "px", "top", Eb + "px")
                }
                document.body.clientWidth > d && 0 < d && Tb(document.body, "width", d + "px");
                Tb(b.o, "height", "100%", "width", "100%");
                b.W(b.H && f);
                b.V = d;
                b.U = e;
                b.$ = c;
                b.w = !1
            }
        }
        null != document[Od] && a.V.width != a.qa && (a.qa = a.V.width, m(window.innerWidth) && (a.S = 30 * a.V.width / (window.innerWidth > window.innerHeight ? window.innerWidth: window.innerHeight) / a.v[3]), b = a.S * a.v[3], c = a.S * a.v[4], a.U = a.V.width - b, X(a, a.R), a.R = C(a.U, 0, b, c), V(a, a.R, Td()))
    },
    ce = function(a, b) {
        b.s = a.W;
        bd(a.H, window, ["keydown", "keyup"], b.handleEvent, !0, b)
    },
    V = function(a, b, c) {
        a.s.o.push(new nd(b, c))
    },
    X = function(a, b) {
        for (var c = a.s,
        d = c.o.length - 1; 0 <= d; d--) c.o[d].o === b && c.o.splice(d, 1);
        c.s && b === c.s.o && (c.s = null, md(c));
        c.w && b === c.w.o && (c.w = null);
        ld(c, "areamove", c.T, c.R)
    }; W.prototype.ka = n; W.prototype.ma = n; W.prototype.$ = n; W.prototype.ta = n;
    var de = function(a) {
        return 0 == a.indexOf("//") ? "https:" + a: a
    },
    ee = function(a) {
        bc(["share", a, "x"].join())
    };
    var fe = function(a, b, c) {
        this.ha = [];
        this.v = a;
        this.o = b;
        this.w = c
    },
    ge = function(a, b, c) {
        var d = new oa(a.v);
        na(d,
        function() {
            for (var e = Uc(P.ra(), d, [d.o.width, d.o.height]), f = 0; f < a.o.length; f++) a.ha[f] = new T([e, a.o[f], 0, a.w[f], d.o.height], b, 0, 1);
            c()
        });
        d.w()
    },
    he = function(a, b) {
        for (var c = 0; c < a.ha.length; c++) a.ha[c].o = b
    },
    ie = function(a) {
        for (var b = 0; b < a.ha.length; b++) a.ha[b].H()
    }; fe.prototype.s = function(a) {
        for (var b = 0; b < this.ha.length; b++) this.ha[b].s(a)
    }; P.ra();
    var ke = function(a, b, c, d, e, f) {
        this.T = a;
        this.w = b;
        this.o = c;
        this.v = d;
        this.V = f || 1;
        this.Ra = e;
        this.$ = null;
        this.Ta = Yb("share", "");
        this.Sa = Yb("shortlink", "https://www.google.com");
        this.U = this.Ga = this.H = !1;
        this.s = yd[3] * this.V;
        this.S = ud[3] * this.V;
        this.R = .1 * this.s;
        this.W = this.S + this.R;
        this.ka = 4 * this.W + this.s + this.R;
        this.ma = new T(yd, this.o, this.v, .3, this.V);
        this.Qa = new T(zd, this.o, this.v, .3, this.V);
        this.va = new T(ud, this.o, this.v + this.R, 1, this.V);
        this.Ia = new T(td, this.o, this.v + this.R, 1, this.V);
        this.Ka = new T(Ad, this.o, this.v + this.R, 1, this.V);
        this.La = new T(sd, this.o, this.v + this.R, 1, this.V);
        this.Ma = C(this.o, this.v, this.s, this.s);
        this.Ja = C(this.o - this.ka + this.s, this.v, this.ka, this.s);
        this.wa = C(this.o - (this.s + 3 * this.W), this.v + this.R, this.S, this.S);
        this.ta = C(this.o - (this.s + 2 * this.W), this.v + this.R, this.S, this.S);
        this.Ha = C(this.o - (this.s + this.W), this.v + this.R, this.S, this.S);
        this.qa = C(this.o - this.s, this.v + this.R, this.S, this.S);
        var g = this;
        V(this.w, this.Ma,
        function(a) {
            gd() ? "mousedown" == a && (window.location = "http://www.google.com/doodles/_SHARE?description=" + encodeURIComponent(this.Ta) + "&url=" + encodeURIComponent(this.Sa)) : "mouseover" == a ? (je(g, g.ma, !0), g.H = !0) : "mouseout" == a ? (je(g, g.ma, !1), g.H = !1) : "mousedown" == a && (g.H = !g.U, je(g, g.ma, g.H))
        })
    },
    je = function(a, b, c) {
        c = c ? new Q({
            opacity: Yd(b)
        },
        {
            opacity: 1
        },
        500 * (1 - Yd(b)) / .7, S) : new Q({
            opacity: Yd(b)
        },
        {
            opacity: .3
        },
        500 * (Yd(b) - .3) / .7, S);
        b.o = c;
        a.Ra()
    },
    le = function(a, b, c, d) {
        a = a.U ? new Q({
            x: U(b)
        },
        {
            x: d
        },
        500 * (d - U(b)) / (d - c), Cd(1.5)) : new Q({
            x: U(b)
        },
        {
            x: c
        },
        500 * (U(b) - c) / (d - c), Cd(1.5));
        b.o = a
    },
    me = function(a) {
        var b = a.U ? 1 : 0;
        a.$ && (b = R(a.$).opacity);
        a.$ = a.U ? new Q({
            opacity: b
        },
        {
            opacity: 0
        },
        500, S) : new Q({
            opacity: b
        },
        {
            opacity: 1
        },
        500, S);
        le(a, a.va, a.o, a.o - (a.s + 3 * a.W));
        le(a, a.Ia, a.o, a.o - (a.s + 2 * a.W));
        le(a, a.Ka, a.o, a.o - (a.s + a.W));
        le(a, a.La, a.o, a.o - a.s)
    },
    ne = function(a) {
        var b = a.U;
        a.U = a.Ga || a.H;
        a.U != b && (gd() || me(a), a.U ? (V(a.w, a.wa,
        function(c) {
            "mousedown" == c ? (c = a.Sa, c = de(c), (new Ud(c, window.google.doodle.alt || "", a.Ta, "")).R()) : "mouseover" == c ? a.H = !0 : "mouseout" == c && (a.H = !1)
        }), V(a.w, a.ta,
        function(c) {
            if ("mousedown" == c) {
                c = a.Sa;
                c = de(c);
                var b = new G("http://www.facebook.com/sharer.php"),
                e = new H;
                Gb(e, "u", c);
                ub(b, e);
                window.open(b.toString());
                ee(2)
            } else "mouseover" == c ? a.H = !0 : "mouseout" == c && (a.H = !1)
        }), V(a.w, a.Ha,
        function(c) {
            "mousedown" == c ? (c = a.Sa, c = de(c), window.open("http://twitter.com/intent/tweet?status=" + encodeURIComponent(String(a.Ta + "\n" + c))), ee(3)) : "mouseover" == c ? a.H = !0 : "mouseout" == c && (a.H = !1)
        }), V(a.w, a.qa,
        function(c) {
            if ("mousedown" == c) {
                var b = a.Sa,
                e = a.Ta;
                ee(5);
                c = window.location;
                var b = de(b),
                b = {
                    subject: Zb,
                    body: e + "\n" + b
                },
                e = new H,
                f;
                for (f in b) Gb(e, f, b[f]);
                f = new G("mailto:");
                ub(f, e);
                c.href = f.toString()
            } else "mouseover" == c ? a.H = !0 : "mouseout" == c && (a.H = !1)
        }), V(a.w, a.Ja,
        function(c) {
            "mouseout" == c ? a.Ga = !1 : "mouseover" == c && (kd(a.w.s, a.wa), kd(a.w.s, a.ta), kd(a.w.s, a.Ha), kd(a.w.s, a.qa), a.Ga = !0)
        })) : (X(a.w, a.wa), X(a.w, a.ta), X(a.w, a.Ha), X(a.w, a.qa), X(a.w, a.Ja)))
    };
    var oe = L.ra(), Zc = Yc.ra(); P.ra();
    var qe = function(a, b, c, d, e) {
        this.$a = a;
        this.s = b;
        this.w = c;
        this.T = e;
        this.$ = d.transition_time;
        this.v = this.T[0];
        this.S = d.slide_height;
        this.ma = d.slide_width;
        a = xd[3];
        b = pd[3];
        c = this.S / 190;
        this.Ia = 8 * c;
        this.Ra = 32 * c;
        this.Qa = 24 * c / a;
        this.La = 80 * c / b;
        this.ta = a * this.Qa;
        this.U = b * this.La;
        this.V = this.U + this.Ra;
        this.ka = this.V + this.ma;
        this.ab = !1;
        this.qa = [];
        this.Ga = null;
        this.wa = !0;
        this.Ya = d.animation_type;
        this.o = 0;
        this.$a.title = Yb("alt", "");
        this.H = null;
        this.rb = C(this.V, 0, this.ma, this.S);
        this.W = new T(xd, this.ka - this.ta, this.S + this.Ia, .3, this.Qa);
        this.hb = new ke(this.s, this.w, this.ka - 2 * this.ta - this.Ia, this.S + this.Ia,
        function() {
            M(oe)
        },
        this.Qa);
        $c();
        pe(this)
    },
    pe = function(a) {
        a.Xa = {};
        a.Xa.fade = function(b) {
            he(a.H, new Q({
                opacity: 1
            },
            {
                opacity: 0
            },
            b, Cd(3)));
            he(a.v, new Q({
                opacity: 0
            },
            {
                opacity: 1
            },
            b, Cd(3), b));
            a.Ga = new Q({
                opacity: 0
            },
            {
                opacity: 1
            },
            2 * b, Dd)
        };
        a.Xa.continuous = function(b, c) {
            for (var d = 0; d < a.v.ha.length; d++) {
                var e = U(a.H.ha[d]),
                f = U(a.v.ha[d]),
                g = c ? e + Wd(a.H.ha[d]) - 1 : U(a.H.ha[d]) - Wd(a.v.ha[d]),
                h = c ? f - Wd(a.H.ha[d]) + 1 : U(a.v.ha[d]) + Wd(a.v.ha[d]);
                a.H.ha[d].o = new Q({
                    x: e
                },
                {
                    x: h
                },
                b, rc);
                a.v.ha[d].o = new Q({
                    x: g
                },
                {
                    x: f
                },
                b, rc)
            }
        }
    },
    re = function(a) {
        var b = C(U(a.W), Xd(a.W), a.ta, a.ta);
        V(a.w, b,
        function(c) {
            if ("mouseup" == c) {
                Y(a.W, !1);
                var b = google.doodle ? google.doodle.url: "";
                if (b) if (google.nav && google.nav.go) {
                    c = b;
                    if (0 == b.indexOf("/search")) {
                        c = new G(window.location);
                        c.H = "/search";
                        for (var b = (b instanceof G ? new G(b) : new G(b, void 0)).s, e = b.Na(), f = 0; f < e.length; f++) {
                            var g = e[f],
                            h = c,
                            k = g,
                            g = b.get(g);
                            h.s.set(k, g)
                        }
                        c = c.toString()
                    }
                    google.nav.go(c)
                } else window.parent ? window.parent.location.assign(b) : window.location.assign(b)
            } else "mousedown" == c ? Y(a.W, !0) : "mouseover" == c ? Y(a.W, !0) : "mouseout" == c && Y(a.W, !1)
        })
    }; qe.prototype.Ha = function() {
        this.s.clearRect(0, 0, se(this), te(this));
        this.s.save();
        this.s.beginPath();
        this.s.rect(this.V, 0, this.ma, this.S);
        this.s.clip(); (this.wa || "continuous" != this.Ya) && this.v.s(this.s);
        this.H && (this.H.s(this.s), $d(this.H.ha[0]) || (this.H = null));
        this.wa || "continuous" != this.Ya || this.v.s(this.s);
        this.Ga && (Bd(this.Ga) ? this.Ga = null: (this.s.globalAlpha = R(this.Ga).opacity, this.s.fillStyle = "white", this.s.fillRect(this.V, 0, this.ma, this.S)));
        this.s.restore();
        for (var a = 0; a < this.qa.length; a++) this.qa[a].s(this.s);
        this.W.s(this.s);
        ne(this.hb);
        a = this.hb;
        if (gd()) a.Qa.s(a.T);
        else {
            a.T.save();
            if (a.U || $d(a.va)) a.va.s(a.T),
            a.Ia.s(a.T),
            a.Ka.s(a.T),
            a.La.s(a.T);
            a.$ && (a.T.globalAlpha = R(a.$).opacity, a.T.fillStyle = "white", a.T.fillRect(a.o - a.ka + a.s, a.v, a.ka, a.s), Bd(a.$) && (a.$ = null));
            a.ma.s(a.T);
            a.T.restore()
        }
        a = this.w;
        null != document[Od] && a.wa.s(a.v, this.s, a.U, 0, a.S)
    };
    var Y = function(a, b) {
        var c = Yd(a);
        a.o = b ? new Q({
            opacity: c
        },
        {
            opacity: 1
        },
        500 * (1 - c) / .7, S) : new Q({
            opacity: c
        },
        {
            opacity: .3
        },
        500 * (c - .3) / .7, S);
        M(oe)
    },
    ue = function(a, b) {
        var c = 2 * Math.PI,
        d = Zd(b) % c;
        b.o = new Q({
            angle: d
        },
        {
            angle: c
        },
        a.$ * (c - d) / c, S);
        M(oe)
    }; qe.prototype.Ja = function(a, b, c) {
        this.H = this.T[a];
        this.v = this.T[this.o];
        ie(this.H);
        ie(this.v);
        this.Xa[c || this.Ya](b, this.wa);
        this.ab = !1;
        M(oe)
    };
    var Z = function(a, b) {
        a.$a.title = "";
        if (!$d(a.v.ha[0]) && !a.ab) {
            a.ab = !0;
            var c = a.o,
            d;
            switch (b) {
            case 0:
                a.o = ++a.o % a.T.length;
                d = 1;
                a.wa = !0;
                break;
            case 1:
                a.o = 0 == a.o ? a.T.length - 1 : --a.o;
                d = 2;
                a.wa = !1;
                break;
            case 2:
                a.o = qa(c, a.T.length),
                d = 3
            }
            Zc.log(1, a.o, d);
            0 == a.T[a.o].ha.length ? ge(a.T[a.o], a.V,
            function() {
                a.Ja(c, a.$)
            }) : a.Ja(c, a.$)
        }
    },
    se = function(a) {
        return 2 * a.V + a.ma
    },
    te = function(a) {
        return a.S + 2 * a.Ia + a.ta
    };
    var we = function(a, b, c, d, e) {
        qe.call(this, a, b, c, d, e);
        this.R = !1;
        this.va = new T(vd, this.ka, 0, .3, this.La);
        this.qa.push(this.va);
        ve(this)
    }; t(we, qe);
    var ve = function(a) {
        re(a);
        var b = C(a.V, 0, a.ma, a.S);
        V(a.w, C(a.ka, 0, a.U / 2, a.U / 2),
        function(b) {
            M(oe);
            "mousedown" == b ? (ue(a, a.va), Z(a, 2), a.R = !0, setTimeout(function() {
                a.R = !1
            },
            a.$)) : "mouseover" != b || a.R ? "mouseout" != b || a.R || Y(a.va, !1) : Y(a.va, !0)
        });
        V(a.w, b,
        function(b) {
            M(oe);
            "mousedown" == b && (ue(a, a.va), Z(a, 2), a.R = !0, setTimeout(function() {
                a.R = !1
            },
            a.$))
        })
    };
    var ye = function(a, b, c, d, e) {
        qe.call(this, a, b, c, d, e);
        this.va = (this.S - this.U) / 2;
        this.Ka = new T(pd, 0, this.va, .3, this.La);
        this.Ma = new T(qd, this.ka + this.Ra, this.va, .3, this.La);
        this.R = d.show_left_initial;
        this.qb = C(this.ka + this.Ra, this.va, this.U, this.U);
        this.Za = C(0, this.va, this.U, this.U);
        this.qa[0] = this.Ma;
        xe(this)
    }; t(ye, qe);
    var xe = function(a) {
        re(a);
        var b = 0;
        V(a.w, a.qb, ze(a, a.Ma, !0));
        V(a.w, a.rb,
        function(c, d) {
            "mousedown" == c ? b = d: "mouseup" == c && (10 <= d - b && (a.R || 0 != a.o) ? Z(a, 1) : Ae(a) && Z(a, 0))
        });
        a.R && V(a.w, a.Za, ze(a, a.Ka, !1));
        ce(a.w, new ae(function(b) {
            37 != b.w || !a.R && 0 == a.o ? 39 == b.w && Ae(a) && Z(a, 0) : Z(a, 1)
        },
        function(a) {
            return 37 == a.w || 39 == a.w
        }));
        a.w.H.listen(new Jd(a.$a), "mousewheel",
        function(b) {
            b.preventDefault();
            0 < b.deltaY && Ae(a) ? Z(a, 0) : 0 > b.deltaY && (a.R || 0 != a.o) && Z(a, 1)
        })
    },
    ze = function(a, b, c) {
        var d = c ? 0 : 1;
        return function(c) {
            "mouseover" == c ? Y(b, !0) : "mouseout" == c ? Y(b, !1) : "mousedown" == c ? Y(b, !0) : "mouseup" == c && (a.w.s.S && Y(b, !1), Z(a, d))
        }
    }; ye.prototype.Ha = function() {
        this.R || 0 != this.o ? this.qa[1] = this.Ka: this.qa.length = 1;
        ye.Da.Ha.call(this)
    }; ye.prototype.Ja = function(a) {
        this.R || 0 != this.o ? 0 != a || this.R || V(this.w, this.Za, ze(this, this.Ka, !1)) : (this.Ka.H(), X(this.w, this.Za));
        a == this.T.length - 1 && (this.Ma.w = qd);
        var b = this;
        this.o != this.T.length - 1 || this.R || window.setTimeout(function() {
            b.Ma.w = wd;
            b.Ha()
        },
        b.$);
        var c, d = this.$;
        a != this.T.length - 1 || 0 != this.o || this.R || (c = "fade", d = 500);
        ye.Da.Ja.call(this, a, d, c)
    };
    var Ae = function(a) {
        return a.R || a.o < a.T.length - 1
    };
    var Wc = P.ra(), Hc = L.ra(), Be = function(a, b) {
        W.call(this, a, b)
    }; t(Be, W); Be.prototype.ka = function() {
        return rd
    }; Be.prototype.ma = function() {
        return Wc
    }; Be.prototype.$ = function() {
        var a = Hc;
        a.V = !0;
        a.s = 0;
        a.H = 0
    };

	Be.prototype.ta = function() {
        M(Hc)
    };

    var Ce = function(a, b, c, d) {
        u.call(this);
        this.H = b.getContext("2d");
        this.s = new Be(a, b);
        Ca(this, fa(Da, this.s));
        var e = null,
        e = c.display_type;
        if ("slideshow" == e) e = ye;
        else if ("refresh" == e) e = we;
        else return;
        this.v = new e(a, this.H, this.s, c, d);
        var f = this;
        Jc(function() {
            be(f.s);
            f.v.Ha();
            return ! 0
        });
        b.width = se(this.v);
        b.height = te(this.v);
        b.style.height = "230px";
        jd(this.s.s, !1);
        be(this.s);
        this.v.Ha();
        Qb && M(Hc)
    };

	t(Ce, u);

    var De = null;
	(function(a, b, c) {
        var d = function() {
            a();
            window.lol && window.lol()
        },
        e = function() {
            Ba(d, b, c);
            Aa(d, b);
            d()
        };
        google && google.x ? google.x({
            id: "DOODLE"
        },
        e) : e()
    })(function() {
        var a = Yb("doodle_args", null);
        if (null !== a) {
            var b = JSON.parse(a._slideshow_config),
            c = document.getElementById("hplogo"),
            d = c ? c.querySelector("canvas") : null;
            if (d && 0 != b.slides.length) {
                var e = Ka(b.slides,
                function(a) {
                    return new fe(a.image_url, a.layer_x_array, a.layer_width_array)
                }),
                f = !1,
                g = function() {
                    0 < e[0].ha.length && f && (De = new Ce(c, d, b, e))
                };
                ge(e[0], 112 / 190 * b.slide_height, g);
                Xc(function() {
                    f = !0;
                    g()
                })
            }
        }
    },
    function() {
        for (var a = Wc,
        b = 0,
        c; c = a.o[b]; b++) c.v = [];
        Da(De)
    });
})();